package com.xiaoshuidi.cloud.module.contract.service.contract.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.xiaoshuidi.cloud.module.contract.controller.admin.contract.vo.ContractConfigReqVO;
import com.xiaoshuidi.cloud.module.contract.convert.contract.ContractConvert;
import com.xiaoshuidi.cloud.module.contract.dal.dataobject.contract.ContractConfigDO;
import com.xiaoshuidi.cloud.module.contract.dal.mysql.contract.ContractConfigMapper;
import com.xiaoshuidi.cloud.module.contract.service.contract.ContractConfigService;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;

import javax.annotation.Resource;
import java.util.List;

import static com.xiaoshuidi.cloud.module.contract.enums.ApiConstants.ONE;

@Service
public class ContractConfigServiceImpl implements ContractConfigService {

    @Resource
    private ContractConfigMapper contractConfigMapper;

    @Override
    public void createContractConfig(ContractConfigReqVO contractConfigReqVo) {
        contractConfigMapper.insert(ContractConvert.INSTANCE.convert(contractConfigReqVo));
    }

    @Override
    public void saveContractConfig(ContractConfigReqVO contractConfigReqVo) {
        if (contractConfigReqVo.getId() == null){
            contractConfigMapper.insert(ContractConvert.INSTANCE.convert(contractConfigReqVo));
        }else {
            contractConfigMapper.updateById(ContractConvert.INSTANCE.convert(contractConfigReqVo));
        }
    }

    @Override
    public ContractConfigReqVO getContractConfig() {
        QueryWrapper<ContractConfigDO> qw = new QueryWrapper();
        return ContractConvert.INSTANCE.convert(contractConfigMapper.selectOne(qw));
    }

    @Override
    public List<ContractConfigDO> getAllOpenStatus() {
        LambdaQueryWrapper<ContractConfigDO> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(ContractConfigDO::getContractSignedAgingStatus, ONE);
        return contractConfigMapper.selectList(queryWrapper);
    }
}
